Spring Boot JPA Auditing একটি শক্তিশালী ফিচার যা আপনাকে Entity-তে স্বয়ংক্রিয়ভাবে সময়, প্রবর্তক এবং অন্যান্য নিরীক্ষণ (auditing) তথ্য সংরক্ষণ করতে সাহায্য করে। এটি ব্যবহৃত হয় যখন আপনাকে Entity-তে তথ্য পরিবর্তন করার সময় create, update টাইমস্ট্যাম্প এবং who made the changes সংরক্ষণ করতে হয়। Spring JPA Auditing ব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে এই তথ্যগুলো ট্র্যাক করে।
Spring Boot JPA Auditing দুটি মূল উদ্দেশ্য পালন করে:
createdDate
, createdBy
)।lastModifiedDate
, lastModifiedBy
)।Spring Boot JPA Auditing এর জন্য প্রথমে আপনাকে @EnableJpaAuditing অ্যানোটেশনটি আপনার কনফিগারেশন ক্লাসে যোগ করতে হবে, যাতে Spring কনটেইনার Auditing ফিচারটি সক্রিয় করতে পারে।
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication
@EnableJpaAuditing
public class SpringBootJpaAuditingApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootJpaAuditingApplication.class, args);
}
}
এখানে, @EnableJpaAuditing অ্যানোটেশন ব্যবহার করে Spring JPA Auditing ফিচারটি সক্ষম করা হয়েছে।
Spring JPA Auditing ব্যবহার করতে হলে আপনাকে Entity-এ কিছু ফিল্ড (যেমন createdDate
, createdBy
, lastModifiedDate
, lastModifiedBy
) যোগ করতে হবে, এবং আপনি সেই ফিল্ডগুলোকে @CreatedDate, @LastModifiedDate, @CreatedBy, এবং @LastModifiedBy অ্যানোটেশন ব্যবহার করে চিহ্নিত করবেন।
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@CreatedDate
@Column(nullable = false, updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
// Getters and Setters
}
এখানে:
@CreatedDate
: Entity তৈরি হওয়ার সময়টি স্বয়ংক্রিয়ভাবে সন্নিবেশিত হবে।@LastModifiedDate
: Entity আপডেট হওয়ার সময়টি স্বয়ংক্রিয়ভাবে সন্নিবেশিত হবে।@EntityListeners(AuditingEntityListener.class)
: এটি Spring JPA Auditing চালু করতে ব্যবহৃত হয়।Spring JPA Auditing-এ @CreatedBy এবং @LastModifiedBy ফিল্ডগুলোর মান স্বয়ংক্রিয়ভাবে পাওয়া যায় না, আপনাকে AuditorAware Bean কনফিগার করতে হবে। এটি আপনার অ্যাপ্লিকেশনের ব্যবহারকারীর তথ্য সংগ্রহ করে, যাতে সংশ্লিষ্ট পরিবর্তনকারী ব্যবহারকারীর নাম সঠিকভাবে ইনজেক্ট করা যায়।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware<String> auditorProvider() {
return new AuditorAwareImpl();
}
}
এখানে, AuditorAware<String>
হল একটি interface যা আপনাকে current user (অথবা auditor) প্রদান করতে সাহায্য করবে।
import org.springframework.data.domain.AuditorAware;
import java.util.Optional;
public class AuditorAwareImpl implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
// সাধারণত, এখানে আপনি বর্তমান লগিন ব্যবহারকারীর নাম রিটার্ন করবেন।
return Optional.of("admin");
}
}
এখানে, AuditorAwareImpl
ক্লাসটি বর্তমান ব্যবহারকারী (যেমন admin
) রিটার্ন করে। প্রকৃত অ্যাপ্লিকেশনে এটি সাধারণত SecurityContext
থেকে ডেটা নেবে যা বর্তমানে লগইন করা ব্যবহারকারীকে নির্দেশ করবে।
এখন, যদি আপনার Product
Entity-এ createdBy এবং lastModifiedBy ফিল্ডগুলি যুক্ত করতে চান, তাহলে এটি কিছুটা এভাবে হবে:
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@CreatedDate
@Column(nullable = false, updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
// Getters and Setters
}
এখানে:
@CreatedBy
এবং @LastModifiedBy
ফিল্ডে, AuditorAware
-এর মাধ্যমে বর্তমান ব্যবহারকারীর নাম বা আইডি স্বয়ংক্রিয়ভাবে সেট হবে।Spring Boot JPA Auditing একটি শক্তিশালী ফিচার যা আপনাকে Entity গুলির ওপর audit information যেমন createdDate
, createdBy
, lastModifiedDate
, lastModifiedBy
স্বয়ংক্রিয়ভাবে সন্নিবেশ করার সুবিধা দেয়। Spring JPA Auditing ব্যবহার করার জন্য:
Spring JPA Auditing ব্যবহারের মাধ্যমে আপনি আপনার Entity-তে ইনস্ট্যান্স এবং ডেটা পরিবর্তনের সময়ের তথ্য ট্র্যাক করতে পারবেন, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে সুবিধাজনক।
Auditing একটি সাধারণ পদ্ধতি যা ডেটাবেসে অবজেক্টের পরিবর্তন (যেমন তৈরি, আপডেট, মুছে ফেলা) ট্র্যাক এবং রেকর্ড করার জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটার ইতিহাস বা পরিবর্তনের লজ বজায় রাখার জন্য ব্যবহৃত হয় এবং সাধারণত এডমিনিস্ট্রেটিভ ট্র্যাকিং, অডিট ট্রেলস, এবং কমপ্লায়েন্স প্রয়োজনে ব্যবহৃত হয়। Spring Boot JPA তে Auditing এর মাধ্যমে আপনি আপনার Entity গুলিতে createdDate, lastModifiedDate, createdBy, এবং lastModifiedBy তথ্য সংরক্ষণ করতে পারেন, যা আপনাকে ডেটার পরিবর্তন লগ বা ইতিহাস পরিচালনা করতে সাহায্য করে।
Spring Data JPA Auditing এর মাধ্যমে আপনার Entity গুলিতে এই ধরনের মেটাডেটা ইনজেক্ট করা সহজ হয়, এবং তা সিস্টেমে স্বয়ংক্রিয়ভাবে ট্র্যাক করা হয়।
Auditing প্রয়োজনীয় হতে পারে বিভিন্ন কারণে, যার মধ্যে গুরুত্বপূর্ণ কিছু কারণ হল:
Spring Boot JPA তে auditing চালু করার জন্য কিছু কনফিগারেশন এবং অ্যানোটেশন প্রয়োজন। এর জন্য আপনাকে Spring Data JPA এর Auditing ফিচারটি ব্যবহার করতে হবে, যা @CreatedDate
, @LastModifiedDate
, @CreatedBy
, @LastModifiedBy
অ্যানোটেশনগুলির মাধ্যমে ডেটাবেসে ট্র্যাকিং করতে সহায়ক।
প্রথমে @EnableJpaAuditing
অ্যানোটেশন ব্যবহার করে auditing কনফিগার করতে হবে।
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}
এখানে @EnableJpaAuditing
অ্যানোটেশন Spring Boot কে auditing সক্ষম করতে বলে।
এখন, Entity ক্লাসে @CreatedDate
, @LastModifiedDate
, @CreatedBy
, @LastModifiedBy
অ্যানোটেশন ব্যবহার করে auditing তথ্য সংরক্ষণ করা যাবে। @CreatedBy
এবং @LastModifiedBy
ব্যবহারকারী তথ্য ট্র্যাক করতে সাহায্য করে এবং @CreatedDate
, @LastModifiedDate
ডেটার তারিখ ও সময় সংরক্ষণ করতে ব্যবহৃত হয়।
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
// Getters and Setters
}
এখানে:
@CreatedDate
: এই অ্যানোটেশনটি createdDate
ফিল্ডে অবজেক্টটি তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে বর্তমান তারিখ এবং সময় সংরক্ষণ করবে।@LastModifiedDate
: এই অ্যানোটেশনটি lastModifiedDate
ফিল্ডে অবজেক্টটি যখনই পরিবর্তিত হবে, তখন সর্বশেষ পরিবর্তনের তারিখ এবং সময় সংরক্ষণ করবে।Spring Data JPA-তে JpaRepository বা CrudRepository ইন্টারফেস ব্যবহৃত হয় ডেটাবেস অপারেশন করার জন্য। আপনি findAll()
, save()
, delete()
ইত্যাদি মেথড ব্যবহার করতে পারেন এবং এগুলি auditing তথ্য স্বয়ংক্রিয়ভাবে আপডেট করবে।
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
// Custom query methods (if any)
}
এখানে ProductRepository
হল JpaRepository
ইন্টারফেসের একটি বাস্তবায়ন, যা Product
Entity এর জন্য CRUD অপারেশন সম্পাদন করবে।
AuditorAware
কনফিগারেশন@CreatedBy
এবং @LastModifiedBy
ফিল্ডগুলির জন্য, Spring আপনাকে বর্তমানে সিস্টেমে লগ ইন করা ব্যবহারকারী বা Auditor এর তথ্য সংগ্রহ করতে সহায়ক একটি AuditorAware
কনফিগারেশন তৈরি করতে বলবে।
AuditorAware
কনফিগারেশনimport org.springframework.data.domain.AuditorAware;
import org.springframework.stereotype.Component;
import java.util.Optional;
@Component
public class AuditorAwareImpl implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
// আপনি এখানে আপনার প্রয়োজন অনুসারে ব্যবহারকারী আইডি রিটার্ন করতে পারেন
return Optional.of("admin"); // উদাহরণ হিসেবে admin ব্যবহারকারী
}
}
এখানে, AuditorAwareImpl
ক্লাস ব্যবহারকারীর নাম বা আইডি ফেরত দেবে যেটি @CreatedBy
এবং @LastModifiedBy
এর জন্য ব্যবহৃত হবে।
Auditing একটি গুরুত্বপূর্ণ ফিচার যা Spring Boot JPA-তে ডেটাবেসের পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়। @CreatedDate
, @LastModifiedDate
, @CreatedBy
, @LastModifiedBy
অ্যানোটেশনগুলির মাধ্যমে সহজেই auditing তথ্য সংরক্ষণ করা যায়। এটি অ্যাপ্লিকেশন নিরাপত্তা, কমপ্লায়েন্স, এবং ডিবাগিংয়ের জন্য অপরিহার্য, এবং আপনার অ্যাপ্লিকেশনকে আরও ট্রেসেবল এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
স্প্রিং বুট জেপিএ (Spring Boot JPA) অ্যাপ্লিকেশনে ডেটাবেসে একটি Entity-র created এবং last modified তারিখ স্বয়ংক্রিয়ভাবে ট্র্যাক করা খুবই গুরুত্বপূর্ণ হতে পারে। স্প্রিং ডেটা জেপিএ (Spring Data JPA) আপনাকে @CreatedDate, @LastModifiedDate, এবং @EntityListeners অ্যানোটেশন ব্যবহার করে এই কাজটি সহজেই করতে সাহায্য করে। এই অ্যানোটেশনগুলো Entity ক্লাসের সাথে সম্পর্কিত সময় এবং তারিখ ট্র্যাক করার জন্য ব্যবহৃত হয়, যা সাধারণত লগিং, অডিটিং, এবং অন্যান্য কাজের জন্য দরকারি হতে পারে।
@CreatedDate
অ্যানোটেশনটি একটি Entity এর ফিল্ডে ব্যবহার করা হয়, যা সেই Entity তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে তৈরি তারিখ এবং সময় পূর্ণ করবে। এটি সাধারণত audit ফিল্ড হিসেবে ব্যবহৃত হয়।
import javax.persistence.Entity;
import javax.persistence.Id;
import org.springframework.data.annotation.CreatedDate;
import java.time.LocalDateTime;
@Entity
public class Product {
@Id
private Long id;
private String name;
@CreatedDate
private LocalDateTime createdDate;
// getters and setters
}
এখানে, createdDate
ফিল্ডে @CreatedDate
অ্যানোটেশন ব্যবহার করা হয়েছে, যার মাধ্যমে স্প্রিং নিজেই Entity তৈরি হওয়ার সময় বর্তমান তারিখ এবং সময় ইনজেক্ট করবে।
@CreatedDate
কাজ করার জন্য, আপনার স্প্রিং কনফিগারেশনটিতে @EnableJpaAuditing
অ্যানোটেশন যুক্ত করতে হবে।
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}
এটি স্প্রিং কনটেক্সটে অডিটিং সক্ষম করে এবং আপনার Entity-তে @CreatedDate এবং @LastModifiedDate ফিল্ডগুলির আপডেট পরিচালনা করবে।
@LastModifiedDate
অ্যানোটেশনটি একটি Entity-র last modified তারিখ বা সময় ট্র্যাক করতে ব্যবহৃত হয়। যখন Entity এর কোনো পরিবর্তন হয়, তখন স্প্রিং এটিকে স্বয়ংক্রিয়ভাবে আপডেট করে। এটি সাধারণত updatedDate
ফিল্ডে ব্যবহার করা হয়।
import javax.persistence.Entity;
import javax.persistence.Id;
import org.springframework.data.annotation.LastModifiedDate;
import java.time.LocalDateTime;
@Entity
public class Product {
@Id
private Long id;
private String name;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
// getters and setters
}
এখানে, lastModifiedDate
ফিল্ডে @LastModifiedDate
অ্যানোটেশন ব্যবহার করা হয়েছে, যার মাধ্যমে স্প্রিং Entity আপডেট করার সময় এই ফিল্ডটি স্বয়ংক্রিয়ভাবে পরিবর্তন করবে।
@EntityListeners
অ্যানোটেশনটি Entity ক্লাসে একটি listener নির্ধারণ করতে ব্যবহৃত হয়, যা Entity এর lifecycle ইভেন্ট (যেমন @PrePersist
, @PostPersist
, @PreUpdate
, @PostUpdate
, ইত্যাদি) ট্র্যাক করতে সাহায্য করে। এই অ্যানোটেশনটি সাধারণত audit এবং entity lifecycle ইভেন্টগুলি ট্র্যাক করার জন্য ব্যবহৃত হয়।
আপনি একটি Entity Listener তৈরি করতে পারেন, যা Entity এর তৈরি বা পরিবর্তনের সময় কিছু অডিট তথ্য সেট করবে।
import org.springframework.data.domain.Auditable;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class Auditable {
private LocalDateTime createdDate;
private LocalDateTime lastModifiedDate;
// getters and setters
}
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Product extends Auditable {
@Id
private Long id;
private String name;
// getters and setters
}
এখানে, Auditable
ক্লাসটি @EntityListeners
অ্যানোটেশন ব্যবহার করে স্প্রিং AuditingEntityListener
শ্রেণীটি ব্যবহার করছে, যা createdDate এবং lastModifiedDate স্বয়ংক্রিয়ভাবে আপডেট করতে সাহায্য করে।
স্প্রিং বুট জেপিএ (Spring Boot JPA)-তে @CreatedDate, @LastModifiedDate, এবং @EntityListeners অ্যানোটেশনগুলি Entity ক্লাসের জন্য audit তথ্য স্বয়ংক্রিয়ভাবে পূর্ণ করতে ব্যবহৃত হয়।
এগুলি ব্যবহার করে, আপনি Entity এর ট্র্যাকিং এবং অডিটিং তথ্য সহজে পরিচালনা করতে পারেন, যা অ্যাপ্লিকেশনটির নির্ভরযোগ্যতা এবং ডেটা ম্যানেজমেন্টের জন্য গুরুত্বপূর্ণ।
Auditing স্প্রিং বুট JPA-তে একটি কার্যকরী ফিচার, যা আপনাকে Entity ক্লাসের উপর ডেটা ম্যানিপুলেশন (যেমন, তৈরি করা, আপডেট করা, মুছে ফেলা) সম্পর্কে লগ রাখতে সহায়তা করে। Auditing আপনাকে createdDate, lastModifiedDate, createdBy, lastModifiedBy ইত্যাদি ফিল্ডগুলি স্বয়ংক্রিয়ভাবে ট্র্যাক করতে সাহায্য করে। এই ফিচারটি ব্যবহারের মাধ্যমে আপনি Entity-এর যেকোনো পরিবর্তন সম্পর্কিত মেটাডেটা সংগ্রহ করতে পারেন, যেমন: কখন এবং কিভাবে ডেটা পরিবর্তিত হয়েছে, এবং কে ডেটা পরিবর্তন করেছে।
স্প্রিং বুট JPA-তে Auditing কনফিগারেশন করতে কিছু নির্দিষ্ট ধাপ অনুসরণ করতে হয়। এটি সাধারণত @CreatedDate, @LastModifiedDate, @CreatedBy, এবং @LastModifiedBy অ্যানোটেশন ব্যবহার করে করা হয়।
স্প্রিং বুট JPA তে auditing সক্ষম করার জন্য প্রথমে একটি কনফিগারেশন ক্লাস তৈরি করতে হয়, যেখানে @EnableJpaAuditing অ্যানোটেশন ব্যবহার করা হয়।
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
// Enable JPA Auditing
}
ব্যাখ্যা:
এখন, আপনাকে Entity ক্লাসে auditing ফিল্ড যোগ করতে হবে। এই ফিল্ডগুলো @CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy অ্যানোটেশন দ্বারা চিহ্নিত হবে।
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
@Entity
@EntityListeners(AuditingEntityListener.class) // Enable Auditing
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Double price;
@CreatedDate // Automatically set the creation date
private Date createdDate;
@LastModifiedDate // Automatically set the last modified date
private Date lastModifiedDate;
@CreatedBy // Automatically set the creator of the entity
private String createdBy;
@LastModifiedBy // Automatically set the last modifier of the entity
private String lastModifiedBy;
// Getters and Setters
}
ব্যাখ্যা:
এখন, @CreatedBy এবং @LastModifiedBy ফিল্ডগুলির জন্য আপনি AuditorAware ইন্টারফেসটি ইমপ্লিমেন্ট করবেন, যাতে আপনি ট্র্যাক করতে পারেন createdBy এবং lastModifiedBy এর মান। সাধারণত, এটি লগিন ইউজারের নাম সংরক্ষণ করতে ব্যবহৃত হয়।
import org.springframework.data.domain.AuditorAware;
import org.springframework.stereotype.Component;
import java.util.Optional;
@Component
public class CustomAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
// Here you would retrieve the current logged-in user
return Optional.of("admin"); // Placeholder for the logged-in user
}
}
ব্যাখ্যা:
যদি আপনি Spring Security ব্যবহার করেন, তাহলে আপনি SecurityContextHolder থেকে লগিন করা ইউজারের নাম নিতে পারেন।
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Component;
import java.util.Optional;
@Component
public class CustomAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
return Optional.of(principal.getUsername());
}
}
ব্যাখ্যা:
এখানে SecurityContextHolder থেকে ইউজারের নাম টেনে নেওয়া হচ্ছে, যা getCurrentAuditor() মেথডে ব্যবহার হচ্ছে।
এখন, Entity ক্লাসে createdDate
, lastModifiedDate
, createdBy
, এবং lastModifiedBy
ফিল্ডগুলির জন্য Getter এবং Setter মেথড যুক্ত করতে হবে।
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public Date getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
স্প্রিং বুট জেপিএতে ট্রানজ্যাকশন ব্যবস্থাপনা করার জন্য @Transactional
অ্যানোটেশন ব্যবহার করা হয়। এতে auditing ফিল্ডগুলো স্বয়ংক্রিয়ভাবে আপডেট হয় যখন ডেটাবেসে সংশোধন করা হয়।
import org.springframework.transaction.annotation.Transactional;
@Transactional
public void saveProduct(Product product) {
productRepository.save(product);
}
ব্যাখ্যা:
এখানে @Transactional অ্যানোটেশন ব্যবহৃত হয়েছে যাতে saveProduct মেথডে ডেটাবেসে তথ্য সংরক্ষিত করার সময় ট্রানজ্যাকশন পরিচালিত হয় এবং auditing ফিল্ডগুলোও স্বয়ংক্রিয়ভাবে আপডেট হয়।
Auditing স্প্রিং বুট JPA-তে একটি শক্তিশালী ফিচার, যা Entity ক্লাসের পরিবর্তন ট্র্যাক করতে সহায়তা করে। এটি @CreatedDate, @LastModifiedDate, @CreatedBy, এবং @LastModifiedBy অ্যানোটেশন ব্যবহার করে ডেটাবেসের মধ্যে পরিবর্তনগুলির সময় এবং ইউজার সংক্রান্ত তথ্য সংরক্ষণ করে। স্প্রিং বুট JPA-তে auditing কনফিগার করার মাধ্যমে ডেটাবেসের পরিবর্তন সম্পর্কিত তথ্য অ্যাপ্লিকেশনের মেটাডেটা হিসেবে সংরক্ষণ করা সম্ভব হয়, যা পরে লগিং, ইতিহাস ট্র্যাকিং, বা অডিট রিপোর্ট তৈরিতে ব্যবহার করা যেতে পারে।
Read more